import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    cartList:[]
  },
  mutations: {
    // addcount(state,index){
    //     state.cartList[index].count += 1;
    // }
    // mutations 里只是简单的对state里的数据操作 不做业务逻辑
    addcount(state,index){
      // state.cartList.push(prodect);
      // 这里有个问题 prodect 不是更新后的数据count一直是1
      state.cartList[index].count++;
      console.log(state.cartList);
    },
    addTocarlist(state,prodect){
        // 这点事最有意思的
        // 这个checked 属性 可以在组件了 随处添加 和修改 但是展示的组件CheckButton组件里的选中和不选中样式
        // 是不会跟着改变的 哪怕 你是用computed 来监听改变 也不行
        // 但是 把这个属性放到state里 就可以了, 不管你是在组件里改checked 还是在组件的父级去修改 都可以随时生效
        prodect.checked = true
      state.cartList.push(prodect);
    }
  },
  actions:{
    // actions 里不光是异步请求放到这里 还有一些业务逻辑也要放到这里
    edit(context,goods){
            const sta = context.state.cartList.find((item)=>{return item.iid == goods.iid});
        if(sta){
            const index = context.state.cartList.indexOf(sta);
            context.commit("addcount",index);
        }else{
          context.commit('addTocarlist',goods)
        }
        console.log(goods);
        console.log(context.state.cartList);
    },
    // addcount(state,index){
    //   context.state.cartList[index].count += 1;
    // }
  },
//   这里就是获取state里的数据
  getters:{
    setcartList(state){
        return state.cartList
    }
  },
  modules: {
  }
})
